Configuration
$schema
Section titled “$schema”Allows to pass a path to a JSON schema file.
We publish a JSON schema file for the biome.json
.
You can specify a relative path to the schema of the @biomejs/biome
npm package if @biomejs/biome
is installed in the node_modules
folder:
{ "$schema": "./node_modules/@biomejs/biome/configuration_schema.json"}
If you have problems with resolving the physical file, you can use the one published in this site:
{ "$schema": "https://biomejs.dev/schemas/1.9.4/schema.json"}
extends
Section titled “extends”A list of paths to other JSON files. Biome resolves and applies the options of the files contained in the extends
list, and eventually applies the options contained in the biome.json
file.
files.maxSize
Section titled “files.maxSize”The maximum allowed size for source code files in bytes. Files above this limit will be ignored for performance reasons.
Default:
1048576
(1024*1024, 1MB)
files.ignore
Section titled “files.ignore”A list of Unix shell style patterns. Biome ignores files and folders that match these patterns.
{ "files": { "ignore": ["scripts/*.js"] }}
files.include
Section titled “files.include”A list of Unix shell style patterns. Biome handles only the files and folders that match these patterns.
{ "files": { "include": ["scripts/*.js"] }}
Given the following example:
{ "files": { "include": ["scripts/**/*.js", "src/**/*.js"], "ignore": ["scripts/**/*.js"] }}
Only the files that match the pattern src/**/*.js
will be handled, while the files that match the pattern
scripts/**/*.js
will be ignored.
files.ignoreUnknown
Section titled “files.ignoreUnknown”Biome won’t emit diagnostics if it encounters files that can’t handle.
{ "files": { "ignoreUnknown": true }}
Default:
false
Set of properties to integrate Biome with a VCS (Version Control Software).
vcs.enabled
Section titled “vcs.enabled”Whether Biome should integrate itself with the VCS client
Default:
false
vcs.clientKind
Section titled “vcs.clientKind”The kind of client.
Values:
"git"
vcs.useIgnoreFile
Section titled “vcs.useIgnoreFile”Whether Biome should use the VCS ignore file. When true
, Biome will ignore the files
specified in the ignore file.
vcs.root
Section titled “vcs.root”The folder where Biome should check for VCS files. By default, Biome will use the same
folder where biome.json
was found.
If Biome can’t find the configuration, it will attempt to use the current working directory. If no current working directory can’t be found, Biome won’t use the VCS integration, and a diagnostic will be emitted
vcs.defaultBranch
Section titled “vcs.defaultBranch”The main branch of the project. Biome will use this branch when evaluating the changed files.
linter
Section titled “linter”linter.enabled
Section titled “linter.enabled”Enables Biome’s linter
Default:
true
linter.ignore
Section titled “linter.ignore”An array of Unix shell style patterns.
{ "linter": { "ignore": ["scripts/*.js"] }}
linter.include
Section titled “linter.include”A list of Unix shell style patterns. Biome handles only the files and folders that match these patterns.
{ "linter": { "include": ["scripts/*.js"] }}
Given the following example:
{ "linter": { "include": ["scripts/**/*.js", "src/**/*.js"], "ignore": ["scripts/**/*.js"] }}
Only the files that match the patter src/**/*.js
will be linted, while the files that match the pattern
scripts/**/*.js
will be ignored.
linter.rules.recommended
Section titled “linter.rules.recommended”Enables the recommended rules for all groups.
Default:
true
linter.rules.all
Section titled “linter.rules.all”Enable or disable all rules for all groups.
If recommended
and all
are both true
, Biome will emit a diagnostic and fallback to its defaults.
{ "linter": { "enabled": true, "rules": { "all": true } }}
It’s also possible to combine this flag to enable/disable different rule groups:
{ "linter": { "enabled": true, "rules": { "all": true, "style": { "all": false }, "complexity": { "all": false } } }}
In the previous example, Biome will enable all rules, exception for rules that belong to the style
and complexity
groups.
linter.rules.[group]
Section titled “linter.rules.[group]”Options that influence the rules of a single group. Biome supports the following groups:
accessibility
: Rules focused on preventing accessibility problems.complexity
: Rules that focus on inspecting complex code that could be simplified.correctness
: Rules that detect code that is guaranteed to be incorrect or useless.nursery
: New rules that are still under development. Nursery rules require explicit opt-in via configuration on stable versions because they may still have bugs or performance problems. They are enabled by default on nightly builds, but as they are unstable their diagnostic severity may be set to either error or warning, depending on whether we intend for the rule to be recommended or not when it eventually gets stabilized. Nursery rules get promoted to other groups once they become stable or may be removed. Rules that belong to this group are not subject to semantic version.performance
: Rules catching ways your code could be written to run faster, or generally be more efficient.security
: Rules that detect potential security flaws.style
: Rules enforcing a consistent and idiomatic way of writing your code.suspicious
: Rules that detect code that is likely to be incorrect or useless.linter.rules.[group].recommended
Section titled “linter.rules.[group].recommended”Enables the recommended rules for a single group.
Example:
{ "linter": { "enabled": true, "rules": { "nursery": { "recommended": true } } }}
linter.rules.[group].all
Section titled “linter.rules.[group].all”Enables all rules for a single group.
Example:
{ "linter": { "enabled": true, "rules": { "nursery": { "all": true } } }}
formatter
Section titled “formatter”These options apply to all languages. There are additional language-specific formatting options below.
formatter.enabled
Section titled “formatter.enabled”Enables Biome’s formatter
Default:
true
formatter.ignore
Section titled “formatter.ignore”An array of Unix shell style patterns.
{ "formatter": { "ignore": ["scripts/*.js"] }}
formatter.include
Section titled “formatter.include”A list of Unix shell style patterns. Biome handles only the files and folders that match these patterns.
{ "formatter": { "include": ["scripts/*.js"] }}
Given the following example:
{ "formatter": { "include": ["scripts/**/*.js", "src/**/*.js"], "ignore": ["scripts/**/*.js"] }}
Only the files that match the patter src/**/*.js
will be formatted, while the files that match the pattern
scripts/**/*.js
will be ignored.
formatter.formatWithErrors
Section titled “formatter.formatWithErrors”Allows to format a document that has syntax errors.
{ "formatter": { "formatWithErrors": true }}
Default:
false
formatter.indentStyle
Section titled “formatter.indentStyle”The style of the indentation. It can be "tab"
or "space"
.
Default:
"tab"
formatter.indentSize
Section titled “formatter.indentSize”This option is deprecated, please use formatter.indentWidth
instead.
Deprecated
How big the indentation should be.
Default:
2
formatter.indentWidth
Section titled “formatter.indentWidth”How big the indentation should be.
Default:
2
formatter.lineEnding
Section titled “formatter.lineEnding”The type of line ending.
"lf"
, Line Feed only (\n
), common on Linux and macOS as well as inside git repos;"crlf"
, Carriage Return + Line Feed characters (\r\n
), common on Windows;"cr"
, Carriage Return character only (\r
), used very rarely.
Default:
"lf"
formatter.lineWidth
Section titled “formatter.lineWidth”How many characters can be written on a single line.
Default:
80
formatter.attributePosition
Section titled “formatter.attributePosition”The attribute position style in HTMLish languages.
"auto"
, the attributes are automatically formatted, and they will collapse in multiple lines only when they hit certain criteria;"multiline"
, the attributes will collapse in multiple lines if more than 1 attribute is used.
Default:
"auto"
formatter.useEditorconfig
Section titled “formatter.useEditorconfig”Whether Biome should use the .editorconfig
file to determine the formatting options. If true
, the applicable options in the .editorconfig
file will be used, but any configuration in the biome.json
file will still take precedence.
When migrating from Prettier with biome migrate
, this option is set to true
to match the behavior of Prettier.
Default:
false
organizeImports
Section titled “organizeImports”organizeImports.enabled
Section titled “organizeImports.enabled”Enables Biome’s sort imports.
Default:
true
organizeImports.ignore
Section titled “organizeImports.ignore”A list of Unix shell style patterns. Biome ignores files and folders that match these patterns.
{ "organizeImports": { "ignore": ["scripts/*.js"] }}
organizeImports.include
Section titled “organizeImports.include”A list of Unix shell style patterns. Biome handles only the files and folders that match these patterns.
{ "organizeImports": { "include": ["scripts/*.js"] }}
Given the following example:
{ "organizeImports": { "include": ["scripts/**/*.js", "src/**/*.js"], "ignore": ["scripts/**/*.js"] }}
Only the files that match the patter src/**/*.js
will have their imports sorted, while the files that match the pattern
scripts/**/*.js
will be ignored.
javascript
Section titled “javascript”These options apply only to JavaScript (and TypeScript) files.
javascript.parser.unsafeParameterDecoratorsEnabled
Section titled “javascript.parser.unsafeParameterDecoratorsEnabled”Allows to support the unsafe/experimental parameter decorators.
{ "javascript": { "parser": { "unsafeParameterDecoratorsEnabled": true } }}
Default:
false
javascript.formatter.quoteStyle
Section titled “javascript.formatter.quoteStyle”The type of quote used when representing string literals. It can be "single"
or "double"
.
Default:
"double"
javascript.formatter.jsxQuoteStyle
Section titled “javascript.formatter.jsxQuoteStyle”The type of quote used when representing jsx string literals. It can be "single"
or "double"
.
Default:
"double"
javascript.formatter.quoteProperties
Section titled “javascript.formatter.quoteProperties”When properties inside objects should be quoted. It can be "asNeeded"
or "preserve"
.
Default:
"asNeeded"
javascript.formatter.trailingComma
Section titled “javascript.formatter.trailingComma”This option is deprecated, please use javascript.formatter.trailingCommas
instead.
Deprecated
Print trailing commas wherever possible in multi-line comma-separated syntactic structures. Possible values:
"all"
, the trailing comma is always added;"es5"
, the trailing comma is added only in places where it’s supported by older version of JavaScript;"none"
, trailing commas are never added.
Default:
"all"
javascript.formatter.trailingCommas
Section titled “javascript.formatter.trailingCommas”Print trailing commas wherever possible in multi-line comma-separated syntactic structures. Possible values:
"all"
, the trailing comma is always added;"es5"
, the trailing comma is added only in places where it’s supported by older version of JavaScript;"none"
, trailing commas are never added.
Default:
"all"
javascript.formatter.semicolons
Section titled “javascript.formatter.semicolons”It configures where the formatter prints semicolons:
"always"
, the semicolons is always added at the end of each statement;"asNeeded"
, the semicolons are added only in places where it’s needed, to protect from ASI.
Default:
"always"
Example:
{ "javascript": { "formatter": { "semicolons": "asNeeded" } }}
javascript.formatter.arrowParentheses
Section titled “javascript.formatter.arrowParentheses”Whether to add non-necessary parentheses to arrow functions:
"always"
, the parentheses are always added;"asNeeded"
, the parentheses are added only when they are needed.
Default:
"always"
javascript.formatter.enabled
Section titled “javascript.formatter.enabled”Enables Biome’s formatter for JavaScript (and its super languages) files.
Default:
true
javascript.formatter.indentStyle
Section titled “javascript.formatter.indentStyle”The style of the indentation for JavaScript (and its super languages) files. It can be "tab"
or "space"
.
Default:
"tab"
javascript.formatter.indentSize
Section titled “javascript.formatter.indentSize”This option is deprecated, please use javascript.formatter.indentWidth
instead.
Deprecated
How big the indentation should be for JavaScript (and its super languages) files.
Default:
2
javascript.formatter.indentWidth
Section titled “javascript.formatter.indentWidth”How big the indentation should be for JavaScript (and its super languages) files.
Default:
2
javascript.formatter.lineEnding
Section titled “javascript.formatter.lineEnding”The type of line ending for JavaScript (and its super languages) files.
"lf"
, Line Feed only (\n
), common on Linux and macOS as well as inside git repos;"crlf"
, Carriage Return + Line Feed characters (\r\n
), common on Windows;"cr"
, Carriage Return character only (\r
), used very rarely.
Default:
"lf"
javascript.formatter.lineWidth
Section titled “javascript.formatter.lineWidth”How many characters can be written on a single line in JavaScript (and its super languages) files.
Default:
80
javascript.formatter.bracketSameLine
Section titled “javascript.formatter.bracketSameLine”Choose whether the ending >
of a multi-line JSX element should be on the last attribute line or not
Default:
false
javascript.formatter.bracketSpacing
Section titled “javascript.formatter.bracketSpacing”Choose whether spaces should be added between brackets and inner values
Default:
true
javascript.formatter.attributePosition
Section titled “javascript.formatter.attributePosition”The attribute position style in jsx elements.
"auto"
, do not enforce single attribute per line."multiline"
, enforce single attribute per line.
Default:
"auto"
javascript.globals
Section titled “javascript.globals”A list of global names that Biome should ignore (analyzer, linter, etc.)
{ "javascript": { "globals": ["$", "_", "externalVariable"] }}
javascript.jsxRuntime
Section titled “javascript.jsxRuntime”Indicates the type of runtime or transformation used for interpreting JSX.
"transparent"
— Indicates a modern or native JSX environment, that doesn’t require special handling by Biome."reactClassic"
— Indicates a classic React environment that requires theReact
import. Corresponds to thereact
value for thejsx
option in TypeScript’stsconfig.json
.
{ "javascript": { "jsxRuntime": "reactClassic" }}
For more information about the old vs. new JSX runtime, please see: https://legacy.reactjs.org/blog/2020/09/22/introducing-the-new-jsx-transform.html
Default:
"transparent"
javascript.linter.enabled
Section titled “javascript.linter.enabled”Enables Biome’s formatter for JavaScript (and its super languages) files.
Default:
true
Options applied to the JSON files.
json.parser.allowComments
Section titled “json.parser.allowComments”Enables the parsing of comments in JSON files.
{ "json": { "parser": { "allowComments": true } }}
json.parser.allowTrailingCommas
Section titled “json.parser.allowTrailingCommas”Enables the parsing of trailing Commas in JSON files.
{ "json": { "parser": { "allowTrailingCommas": true } }}
json.formatter.enabled
Section titled “json.formatter.enabled”Enables Biome’s formatter for JSON (and its super languages) files.
Default:
true
json.formatter.indentStyle
Section titled “json.formatter.indentStyle”The style of the indentation for JSON (and its super languages) files. It can be "tab"
or "space"
.
Default:
"tab"
json.formatter.indentSize
Section titled “json.formatter.indentSize”This option is deprecated, please use json.formatter.indentWidth
instead.
Deprecated
How big the indentation should be for JSON (and its super languages) files.
Default:
2
json.formatter.indentWidth
Section titled “json.formatter.indentWidth”How big the indentation should be for JSON (and its super languages) files.
Default:
2
json.formatter.lineEnding
Section titled “json.formatter.lineEnding”The type of line ending for JSON (and its super languages) files.
"lf"
, Line Feed only (\n
), common on Linux and macOS as well as inside git repos;"crlf"
, Carriage Return + Line Feed characters (\r\n
), common on Windows;"cr"
, Carriage Return character only (\r
), used very rarely.
Default:
"lf"
json.formatter.lineWidth
Section titled “json.formatter.lineWidth”How many characters can be written on a single line in JSON (and its super languages) files.
Default:
80
json.formatter.trailingCommas
Section titled “json.formatter.trailingCommas”Print trailing commas wherever possible in multi-line comma-separated syntactic structures.
Allowed values:
"none"
: the trailing comma is removed;"all"
: the trailing comma is kept and preferred.
Default:
"none"
json.linter.enabled
Section titled “json.linter.enabled”Enables Biome’s formatter for JSON (and its super languages) files.
Default:
true
Options applied to the CSS files.
css.parser.cssModules
Section titled “css.parser.cssModules”Enables parsing of CSS modules
Default:
false
css.formatter.enabled
Section titled “css.formatter.enabled”Enables Biome’s formatter for CSS (and its super languages) files.
Default:
false
css.formatter.indentStyle
Section titled “css.formatter.indentStyle”The style of the indentation for CSS (and its super languages) files. It can be "tab"
or "space"
.
Default:
"tab"
css.formatter.indentWidth
Section titled “css.formatter.indentWidth”How big the indentation should be for CSS (and its super languages) files.
Default:
2
css.formatter.lineEnding
Section titled “css.formatter.lineEnding”The type of line ending for CSS (and its super languages) files.
"lf"
, Line Feed only (\n
), common on Linux and macOS as well as inside git repos;"crlf"
, Carriage Return + Line Feed characters (\r\n
), common on Windows;"cr"
, Carriage Return character only (\r
), used very rarely.
Default:
"lf"
css.formatter.lineWidth
Section titled “css.formatter.lineWidth”How many characters can be written on a single line in JSON (and its super languages) files.
Default:
80
css.formatter.quoteStyle
Section titled “css.formatter.quoteStyle”The type of quote used when representing string literals. It can be "single"
or "double"
.
Default:
"double"
css.linter.enabled
Section titled “css.linter.enabled”Enables Biome’s linter for CSS (and its super languages) files.
Default:
false
overrides
Section titled “overrides”A list of patterns.
Use this configuration to change the behaviour of the tools for certain files.
When a file is matched against an override pattern, the configuration specified in that pattern will be override the top-level configuration.
The order of the patterns matter. If a file can match three patterns, only the first one is used.
overrides.<ITEM>.ignore
Section titled “overrides.<ITEM>.ignore”A list of Unix shell style patterns. Biome will not apply the override to files that match the pattern.
{ "overrides": [{ "ignore": ["scripts/*.js"] }]}
overrides.<ITEM>.include
Section titled “overrides.<ITEM>.include”A list of Unix shell style patterns. Biome will apply the override only to files that match the pattern.
{ "overrides": [{ "include": ["scripts/*.js"] }]}
overrides.<ITEM>.formatter
Section titled “overrides.<ITEM>.formatter”It will include the options of top level formatter configuration, minus ignore
and include
.
Examples
Section titled “Examples”For example, it’s possible to modify the formatter lineWidth
, indentStyle
for certain files that are included in the glob path generated/**
:
{ "formatter": { "lineWidth": 100 }, "overrides": [ { "include": ["generated/**"], "formatter": { "lineWidth": 160, "indentStyle": "space" } } ]}
overrides.<ITEM>.linter
Section titled “overrides.<ITEM>.linter”It will include the options of top level linter configuration, minus ignore
and include
.
Examples
Section titled “Examples”You can disable certain rules for certain glob paths, and disable the linter for other glob paths:
{ "linter": { "enabled": true, "rules": { "recommended": true } }, "overrides": [ { "include": ["lib/**"], "linter": { "rules": { "suspicious": { "noDebugger": "off" } } } }, { "include": ["shims/**"], "linter": { "enabled": false } } ]}
overrides.<ITEM>.organizeImports
Section titled “overrides.<ITEM>.organizeImports”It will include the options of top level organize imports, minus ignore
and include
.
overrides.<ITEM>.javascript
Section titled “overrides.<ITEM>.javascript”It will include the options of top level javascript configuration.
Examples
Section titled “Examples”You can change the formatting behaviour of JavaScript files in certain folders:
{ "formatter": { "lineWidth": 120 }, "javascript": { "formatter": { "quoteStyle": "single" } }, "overrides": [ { "include": ["lib/**"], "javascript": { "formatter": { "quoteStyle": "double" } } } ]}
overrides.<ITEM>.json
Section titled “overrides.<ITEM>.json”It will include the options of top level json configuration.
Examples
Section titled “Examples”You can enable parsing features for certain JSON files:
{ "linter": { "enabled": true, "rules": { "recommended": true } }, "overrides": [ { "include": [".vscode/**"], "json": { "parser": { "allowComments": true, "allowTrailingCommas": true } } } ]}